package com.tian.controller;

import com.tian.dto.RegisterReqDto;
import com.tian.dto.SendCodeReqDto;
import com.tian.dto.UserLoginResDto;
import com.tian.enums.MessageTemplateTypeEnums;
import com.tian.service.SendCodeService;
import com.tian.service.UserService;
import com.tian.util.CommonResult;
import com.tian.util.RedisConstantPre;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;

/**
 * @author tianwc  公众号：java后端技术全栈、面试专栏
 * @version 1.0.0
 * @date 2023年05月11日 16:46
 * 博客地址：<a href="http://woaijava.cc/">博客地址</a>
 * <p>
 * 用户电脑端登录
 */
@RestController
@RequestMapping("/user")
@Scope(scopeName = "prototype")
public class UserLoginController {
    @Resource
    private SendCodeService sendCodeService;
    @Resource
    private UserService userService;


    /**
     * 用户采用 手机验证码登录
     */
    @PostMapping("/login")
    public CommonResult<UserLoginResDto> login(@RequestBody SendCodeReqDto sendCodeReqDto) {
        return userService.login(sendCodeReqDto, RedisConstantPre.SEND_CODE_LOGIN_PRE);
    }

    /**
     * 发送登录手机验证码
     */
    @PostMapping("/sendCode")
    public CommonResult<Boolean> sendCode4Login(@RequestBody SendCodeReqDto sendCodeReqDto) {
        return sendCodeService.sendCode(sendCodeReqDto.getPhone(), RedisConstantPre.SEND_CODE_LOGIN_PRE, MessageTemplateTypeEnums.PAY_SUCCESS_TEMPLATE.getType());
    }

    /**
     * 手机验证码注册
     *
     * @param registerReqDto 注册参数--手机号 openId 验证码
     * @return
     */
    @PostMapping("/register")
    public CommonResult<Boolean> register(@RequestBody RegisterReqDto registerReqDto) {
        return userService.register(registerReqDto, RedisConstantPre.SEND_CODE_REGISTER_PRE);
    }

   /* *//**
     * 发送注册手机验证码
     *//*
    @PostMapping("/sendCode")
    public CommonResult<Boolean> sendCode4Register(@RequestBody SendCodeReqDto sendCodeReqDto) {
        return sendCodeService.sendCode(sendCodeReqDto.getPhone(), RedisConstantPre.SEND_CODE_REGISTER_PRE, MessageTemplateTypeEnums.LOGIN_MESSAGE_TEMPLATE.getType());
    }*/
}
